/*
 * BeanDTO.java
 *
 * Created on 29 de mayo de 2007, 10:31
 *
 */

package es.team.util.beans;

import es.team.tareas.bd.DataBaseManager;
import es.team.util.StringBufferLn;

/**
 * Bean base para definir DTOs en el a aplicacion
 * @author Victor Gimeno (SGV, SL)
 */
public abstract class BeanDTO {
    
    /** Nombre de la aplicacion que va a utilizar el dto */
    private String appName;
    
    /** Key de la sql a realizar */
    private String keySql;
    
    /** variable que refleja si se ha producido algun error */
    private int errorCode;
    
    /** variable que contiene distintos datos o la descrip del error si hay error*/
    private String message;
    
    
    /** Crea una nueva instancia de BeanDTO */
    public BeanDTO() {
        
        errorCode = -1;
        
    }
    
    //<editor-fold defaultstate="collapsed" desc="METODOS GETTER Y SETTER">
    /**
     * Metodo get para controlar errores en el login
     * @return int que indica si hay error en el login
     */
    public int getErrorCode() {
        return errorCode;
    }

    /**
     * Metodo set de la property Error
     * @param errorCode Si hay o no error
     */
    public void setErrorCode(int errorCode) {
        this.errorCode = errorCode;
    }

    /**
     * Metodo get de la property Message
     * @return String la descripcion del mensaje de error si lo hay para depuracion.
     */
    public String getMessage() {
        return message;
    }

    /**
     * Metodo set de la property Message
     * @param message Mensaje de error para depuraci�n
     */
    public void setMessage(String message) {
        this.message = message;
    }

    /**
     * Metodo get de la property AppName
     * @return Nombre de la aplicacion que va a utilizar el dto 
     */
    public String getAppName() {
        return appName;
    }

    /**
     * Metodo set de la property AppName
     * @param appName Nombre de la aplicacion que va a utilizar el dto 
     */
    public void setAppName(String appName) {
        this.appName = appName;
    }

    /**
     * Metodo get de la property keySql
     * @return Key de la sql a realizar
     */
    public String getKeySql() {
        return keySql;
    }

    /**
     * Metodo set de la property keySql
     * @param keySql Key de la sql a realizar
     */
    public void setKeySql(String keySql) {
        this.keySql = keySql;
    }
    
    //</editor-fold>

    /**
     * Returns a string representation of the object. In general, the 
     * <code>toString</code> method returns a string that 
     * "textually represents" this object. The result should 
     * be a concise but informative representation that is easy for a 
     * person to read.
     * It is recommended that all subclasses override this method.
     * <p>
     * The <code>toString</code> method for class <code>Object</code> 
     * returns a string consisting of the name of the class of which the 
     * object is an instance, the at-sign character `<code>@</code>', and 
     * the unsigned hexadecimal representation of the hash code of the 
     * object. In other words, this method returns a string equal to the 
     * value of:
     * <blockquote>
     * <pre>
     * getClass().getName() + '@' + Integer.toHexString(hashCode())
     * </pre></blockquote>
     * 
     * @return a string representation of the object.
     */
    public final String toString() {
        
        StringBufferLn sb = new StringBufferLn();
        
        sb.appendLn("**DEBUG de BeanDTO**");
        sb.appendLn("\tAppName: "+getAppName());
        sb.appendLn("\tKeySQL: "+getKeySql());
        sb.appendLn("\tErrorCode: "+ getErrorCode()+" - "+DataBaseManager.getErrorCodeDescription( getErrorCode() ));
        sb.appendLn("\tMensaje: "+getMessage());
        
        sb.appendLn( toStringImpl() );
        
        sb.appendLn("**FIN DEBUG BeanDTO**");
        
        return sb.toString();
    }
    
    /**
     * M�todo que debere implementar todo Bean que extienda BeanDTO, 
     * para mostras su contenido como una cadena de texto.
     * @return Contenido del bean en una cadena de texto.
     */
    protected abstract String toStringImpl();
        
}
